/*
 * Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los terminos
 * de la licencia "GNU General Public License" publicada por la Fundacion "Free Software Foundation".
 * Este programa se distribuye con la esperanza de que pueda ser util, pero SIN NINGUNA GARANTIA;
 * vea la licencia "GNU General Public License" para obtener mas informacion.
 */
package meta.proyecto.base;

import adalid.core.Page;
import adalid.core.interfaces.Entity;
import adalid.core.jee.AbstractJavaWebModule;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;

/**
 * @author Jorge Campins
 */
public abstract class ModuloBase extends AbstractJavaWebModule {

    public ModuloBase() {
        super();
    }

    /**
     * propiedad enabled de la lista desplegable listaFiltro1 de la clase FragmentoFiltro
     */
    private boolean _fragmentoFiltroListaFiltroEnabled = true;

    /**
     * @return la propiedad enabled de la lista desplegable listaFiltro1 de la clase FragmentoFiltro
     */
    public boolean isFragmentoFiltroListaFiltroEnabled() {
        return _fragmentoFiltroListaFiltroEnabled;
    }

    /**
     * @param enabled propiedad enabled de la lista desplegable listaFiltro1 de la clase FragmentoFiltro
     */
    public void setFragmentoFiltroListaFiltroEnabled(boolean enabled) {
        _fragmentoFiltroListaFiltroEnabled = enabled;
    }

    /**
     * propiedad enabled de los botones botonBuscarFiltro1, botonBuscarFiltro2 y botonBorrarFiltro1 de la clase FragmentoFiltro
     */
    private boolean _fragmentoFiltroBotonFiltroEnabled = true;

    /**
     * @return la propiedad enabled de los botones botonBuscarFiltro1, botonBuscarFiltro2 y botonBorrarFiltro1 de la clase FragmentoFiltro
     */
    public boolean isFragmentoFiltroBotonFiltroEnabled() {
        return _fragmentoFiltroBotonFiltroEnabled;
    }

    /**
     * @param enabled propiedad enabled de los botones botonBuscarFiltro1, botonBuscarFiltro2 y botonBorrarFiltro1 de la clase FragmentoFiltro
     */
    public void setFragmentoFiltroBotonFiltroEnabled(boolean enabled) {
        _fragmentoFiltroBotonFiltroEnabled = enabled;
    }

    /**
     * propiedad enabled del boton botonFavoritos1 de la clase FragmentoCabeza2
     */
    private boolean _fragmentoCabezaBotonAbrirFavoritosEnabled = true;

    /**
     * @return la propiedad enabled del boton botonFavoritos1 de la clase FragmentoCabeza2
     */
    public boolean isFragmentoCabezaBotonAbrirFavoritosEnabled() {
        return _fragmentoCabezaBotonAbrirFavoritosEnabled;
    }

    /**
     * @param enabled propiedad enabled del boton botonFavoritos1 de la clase FragmentoCabeza2
     */
    public void setFragmentoCabezaBotonAbrirFavoritosEnabled(boolean enabled) {
        _fragmentoCabezaBotonAbrirFavoritosEnabled = enabled;
    }

    /**
     * propiedad enabled del boton botonFavoritos2 de la clase FragmentoCabeza2
     */
    private boolean _fragmentoCabezaBotonAgregarFavoritosEnabled = true;

    /**
     * @return la propiedad enabled del boton botonFavoritos2 de la clase FragmentoCabeza2
     */
    public boolean isFragmentoCabezaBotonAgregarFavoritosEnabled() {
        return _fragmentoCabezaBotonAgregarFavoritosEnabled;
    }

    /**
     * @param enabled propiedad enabled del boton botonFavoritos2 de la clase FragmentoCabeza2
     */
    public void setFragmentoCabezaBotonAgregarFavoritosEnabled(boolean enabled) {
        _fragmentoCabezaBotonAgregarFavoritosEnabled = enabled;
    }

    /**
     * propiedad enabled del boton botonTareas1 de la clase FragmentoCabeza2
     */
    private boolean _fragmentoCabezaBotonAbrirTareasEnabled = true;

    /**
     * @return la propiedad enabled del boton botonTareas1 de la clase FragmentoCabeza2
     */
    public boolean isFragmentoCabezaBotonAbrirTareasEnabled() {
        return _fragmentoCabezaBotonAbrirTareasEnabled;
    }

    /**
     * @param enabled propiedad enabled del boton botonTareas1 de la clase FragmentoCabeza2
     */
    public void setFragmentoCabezaBotonAbrirTareasEnabled(boolean enabled) {
        _fragmentoCabezaBotonAbrirTareasEnabled = enabled;
    }

    /**
     * propiedad enabled del boton botonCambiarPassword1 de la clase FragmentoCabeza2
     */
    private boolean _fragmentoCabezaBotonCambiarPasswordEnabled = false;

    /**
     * @return la propiedad enabled del boton botonCambiarPassword1 de la clase FragmentoCabeza2
     */
    public boolean isFragmentoCabezaBotonCambiarPasswordEnabled() {
        return _fragmentoCabezaBotonCambiarPasswordEnabled;
    }

    /**
     * @param enabled propiedad enabled del boton botonCambiarPassword1 de la clase FragmentoCabeza2
     */
    public void setFragmentoCabezaBotonCambiarPasswordEnabled(boolean enabled) {
        _fragmentoCabezaBotonCambiarPasswordEnabled = enabled;
    }

    @Override
    public Entity getEntity(Class<?> type) {
        return getMaster().getEntity(type);
    }

    @Override
    public List<Entity> getEntitiesList() {
        return getMaster().getEntitiesList();
    }

    @Override
    public Map<String, Entity> getEntitiesMap() {
        return getMaster().getEntitiesMap();
    }

    /**
     * @return the pages list
     */
    @Override
    public List<Page> getPagesList() {
        List<Page> pagesList = super.getPagesList();
        if (_pagePredicate != null) {
            CollectionUtils.filter(pagesList, _pagePredicate);
        }
        return pagesList;
    }

    /**
     * the page predicate.
     */
    private Predicate _pagePredicate;

    /**
     * @return the page predicate
     */
    public Predicate getPagePredicate() {
        return _pagePredicate;
    }

    /**
     * @param predicate the page predicate to set
     */
    public void setPagePredicate(Predicate predicate) {
        _pagePredicate = predicate;
    }

}
